add support for invisible cells. (gtk_tree_view_bin_expose): ditto
authorJonathan Blandford <jrb@redhat.com>
Thu, 8 Mar 2001 22:38:59 +0000 (22:38 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Thu, 8 Mar 2001 22:38:59 +0000 (22:38 +0000)
Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
support for invisible cells.
 (gtk_tree_view_bin_expose): ditto

also, forgot to commit tests/testtreeview.c last commit

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreeprivate.h
gtk/gtktreeview.c
tests/testtreeview.c

index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index a8657af51ae1c7fe4a91c56dac1fb1ca633313c9..e85cbaadb70a38c01fd8b720841dba4b2a5c79ad 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar  8 17:40:09 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon): add
+       support for invisible cells.
+        (gtk_tree_view_bin_expose): ditto
+
 Thu Mar  8 16:36:00 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreemodel.c (gtk_tree_model_get_type): add prerequesite
index 1ed5818ae830d7ee49112661d994e9597c0b2f27..8d519c38cb66d77d6610e5cdfe4db00b579e4888 100644 (file)
@@ -40,7 +40,7 @@ extern "C" {
  * separator, the extra pixel by convention goes _below_ the row.  So
  * a node in the rbtree owns TREE_VIEW_VERTICAL_SEPARATOR/2 pixels
  * above the row, and TREE_VIEW_VERTICAL_SEPARATOR/2 +
- * TREE_VIEW_VERTICAL_SEPARATOR%2 pixels below the row. 
+ * TREE_VIEW_VERTICAL_SEPARATOR%2 pixels below the row.
  */
 
 #define TREE_VIEW_VERTICAL_SEPARATOR 2
@@ -89,7 +89,11 @@ struct _GtkTreeViewPrivate
   GdkWindow *header_window;
 
   gint expander_column;
-  
+
+  /* Focus code */
+  gboolean header_has_focus;
+  GList *focus_column;
+
   /* Selection stuff */
   GtkTreeRowReference *anchor;
   GtkTreeRowReference *cursor;
@@ -114,12 +118,12 @@ struct _GtkTreeViewPrivate
 
   /* Scroll timeout (e.g. during dnd) */
   guint scroll_timeout;
-  
+
   /* Row drag-and-drop */
   GtkTreeRowReference *drag_dest_row;
   GtkTreeViewDropPosition drag_dest_pos;
   guint open_dest_timeout;
-  
+
   gint pressed_button;
   gint press_start_x;
   gint press_start_y;
index 04563be654ea539607352a6a18ac960c2b29987d..b5c12ddc11b58074d6f40e5af5bbd2bdd8e6a770 100644 (file)
@@ -315,8 +315,6 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
 
   class->set_scroll_adjustments = gtk_tree_view_set_adjustments;
 
-#if 0
-  /* FIXME, tim needs to support interface prerequisits in GType */
   g_object_class_install_property (o_class,
                                    PROP_MODEL,
                                    g_param_spec_object ("model",
@@ -324,7 +322,6 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
                                                        _("The model for the tree view"),
                                                        GTK_TYPE_TREE_MODEL,
                                                        G_PARAM_READWRITE));
-#endif
   
   g_object_class_install_property (o_class,
                                    PROP_HADJUSTMENT,
@@ -407,7 +404,7 @@ gtk_tree_view_init (GtkTreeView *tree_view)
   tree_view->priv->selection = NULL;
   tree_view->priv->anchor = NULL;
   tree_view->priv->cursor = NULL;
-
+  tree_view->priv->header_has_focus = FALSE;
   tree_view->priv->pressed_button = -1;
   tree_view->priv->press_start_x = -1;
   tree_view->priv->press_start_y = -1;
@@ -1039,14 +1036,14 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView  *tree_view,
           cell_area.x += depth * tree_view->priv->tab_offset;
           cell_area.width -= depth * tree_view->priv->tab_offset;
         }
-      
-      gtk_cell_renderer_render (cell,
-                                drawable,
-                                widget,
-                                &background_area,
-                                &cell_area,
-                                NULL,
-                                0);
+      if (cell->visible)
+       gtk_cell_renderer_render (cell,
+                                 drawable,
+                                 widget,
+                                 &background_area,
+                                 &cell_area,
+                                 NULL,
+                                 0);
       
       cell_offset += column->displayed_width;
     }
@@ -1280,14 +1277,15 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                * level of the tree we're dropping at.
                */
               highlight_x = cell_area.x;
-                
-             gtk_cell_renderer_render (cell,
-                                       event->window,
-                                       widget,
-                                       &background_area,
-                                       &cell_area,
-                                       &event->area,
-                                       flags);
+
+             if (cell->visible)
+               gtk_cell_renderer_render (cell,
+                                         event->window,
+                                         widget,
+                                         &background_area,
+                                         &cell_area,
+                                         &event->area,
+                                         flags);
 
              if ((node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT)
                {
@@ -1300,14 +1298,15 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                }
            }
          else
-           {              
-             gtk_cell_renderer_render (cell,
-                                       event->window,
-                                       widget,
-                                       &background_area,
-                                       &cell_area,
-                                       &event->area,
-                                       flags);
+           {
+             if (cell->visible)
+               gtk_cell_renderer_render (cell,
+                                         event->window,
+                                         widget,
+                                         &background_area,
+                                         &cell_area,
+                                         &event->area,
+                                         flags);
            }
          cell_offset += column->displayed_width;
        }
@@ -1790,14 +1789,14 @@ gtk_tree_view_button_press (GtkWidget      *widget,
                                              &iter);
 
          path_string = gtk_tree_path_to_string (path);
-         if (gtk_cell_renderer_event (cell,
+         if (cell->visible &&
+             gtk_cell_renderer_event (cell,
                                       (GdkEvent *)event,
                                       widget,
                                       path_string,
                                       &background_area,
                                       &cell_area,
                                       0))
-
            {
              g_free (path_string);
              gtk_tree_path_free (path);
@@ -2028,14 +2027,11 @@ gtk_tree_view_focus_out (GtkWidget     *widget,
   return FALSE;
 }
 
-/* FIXME: It would be neat to someday make the headers a seperate widget that
- * can be shared between various apps.  Wishful thinking, though...
- */
 /* Returns TRUE if the focus is within the headers, after the focus operation is
  * done
  */
 static gboolean
-gtk_tree_view_header_focus (GtkTreeView        *tree_view,
+gtk_tree_view_header_focus (GtkTreeView      *tree_view,
                            GtkDirectionType  dir)
 {
   GtkWidget *focus_child;
@@ -2253,18 +2249,15 @@ gtk_tree_view_focus (GtkContainer     *container,
       switch (direction)
        {
        case GTK_DIR_LEFT:
-       case GTK_DIR_TAB_BACKWARD:
          return (gtk_tree_view_header_focus (tree_view, direction));
+       case GTK_DIR_TAB_BACKWARD:
        case GTK_DIR_UP:
          return FALSE;
        case GTK_DIR_TAB_FORWARD:
+         if (gtk_tree_view_header_focus (tree_view, direction))
+           return TRUE;
        case GTK_DIR_RIGHT:
        case GTK_DIR_DOWN:
-         if (direction != GTK_DIR_DOWN)
-           {
-             if (gtk_tree_view_header_focus (tree_view, direction))
-               return TRUE;
-           }
          GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
          gtk_widget_grab_focus (GTK_WIDGET (container));
 
index eea9d5c852771332faab218af76f3f7d2a67d7e2..7a61d1633aaae8775c083a1ebfd077c4129869ca 100644 (file)
@@ -600,7 +600,7 @@ create_tree_model (void)
                                          t[6], t[7], t[8]);
 
   i = 0;
-  while (i < G_TYPE_LAST_RESERVED_FUNDAMENTAL)
+  while (i < G_TYPE_RESERVED_LAST_FUNDAMENTAL)
     {
       typesystem_recurse (i, NULL, store);
       
@@ -1095,7 +1095,7 @@ gtk_real_model_types_iter_next (GtkTreeModel  *tree_model,
   if (parent == G_TYPE_INVALID)
     {
       /* fundamental type, add 1 */
-      if ((type + 1) < G_TYPE_LAST_RESERVED_FUNDAMENTAL)
+      if ((type + 1) < G_TYPE_RESERVED_LAST_FUNDAMENTAL)
         {
           iter->user_data = GINT_TO_POINTER (type + 1);
           return TRUE;
@@ -1183,7 +1183,7 @@ gtk_real_model_types_iter_n_children (GtkTreeModel *tree_model,
 {
   if (iter == NULL)
     {
-      return G_TYPE_LAST_RESERVED_FUNDAMENTAL - 1;
+      return G_TYPE_RESERVED_LAST_FUNDAMENTAL - 1;
     }
   else
     {
@@ -1210,7 +1210,7 @@ gtk_real_model_types_iter_nth_child (GtkTreeModel *tree_model,
   if (parent == NULL)
     {
       /* fundamental type */
-      if (n < G_TYPE_LAST_RESERVED_FUNDAMENTAL)
+      if (n < G_TYPE_RESERVED_LAST_FUNDAMENTAL)
         {
           iter->user_data = GINT_TO_POINTER (n);
           return TRUE;
@@ -1258,7 +1258,7 @@ gtk_real_model_types_iter_parent (GtkTreeModel *tree_model,
   
   if (parent == G_TYPE_INVALID)
     {
-      if (type >= G_TYPE_LAST_RESERVED_FUNDAMENTAL)
+      if (type >= G_TYPE_RESERVED_LAST_FUNDAMENTAL)
         g_warning ("no parent for %d %s\n", type, g_type_name (type));
       return FALSE;
     }